﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ChatForum.Business.Entity;

namespace ChatForum.Business.Contract
{
    public abstract class IAccountService
    {
        protected IRepository _repository;
        protected IAccountService(IRepository repository)
        {
            if (repository == null)
                throw new ArgumentNullException("repository");
            _repository = repository;
        }

        //List of Contracts - defined as abstract method
        public abstract void RegisterUser(User user);
        public abstract void Login(string userId, string password);
		public abstract void Logout(string userId);
		public abstract IEnumerable<User> GetAllUser();
        public abstract User GetUser(string userId);
        public abstract void ChangePassword(string userId, string oldPassword, string password);
		public abstract void BlockUser(User user);
		public abstract void UnblockUser(User user);
        public abstract void ModifyAccountDetails(User user);
		public abstract void SendMessage(User user, string subject, string body);
    }
}
